package com.emm.yixun.customer.service.impl.app.manage;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import com.emm.yixun.common.model.enums.PayDepositBusinessStatusEnum;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.emm.yixun.basic.service.CustomerService;
import com.emm.yixun.basic.service.PayDepositService;
import com.emm.yixun.common.app.GetPayDepositListReqDto;
import com.emm.yixun.common.app.GetPayDepositListResDto;
import com.emm.yixun.common.app.servletentity.PayDepositListRes;
import com.emm.yixun.common.model.Customer;
import com.emm.yixun.common.model.dto.PayDepositDto;
import com.emm.yixun.common.model.enums.AuditStatusEnum;
import com.emm.yixun.common.page.Page;
import com.emm.yixun.common.page.PageUtil;

@Service("getPayDepositListManage")
public class GetPayDepositListManage {

	@Autowired
	private CustomerService customerService;
	@Autowired
	private PayDepositService payDepositService;
	
	/**
	 * 客户认筹列表
	 * @param reqDto
	 * @return
	 */
	public GetPayDepositListResDto getPayDepositList(GetPayDepositListReqDto reqDto) {
		GetPayDepositListResDto resDto = new GetPayDepositListResDto();
		try{
			//1、获取客户相关的姓名及联系电话
			Customer customer = customerService.selectById(Long.parseLong(reqDto.getCustomerId()));
			if(customer != null){
				resDto.setCustomerName(customer.getCustomerName());
				resDto.setCustomerPhone(customer.getCustomerPhone());
			}else{
				resDto.setErrorCode("0000");
				resDto.setErrorMsg("客户获取失败");
				resDto.setResult("0");
				return resDto;
			}
			//2、获取客户认筹列表
			PayDepositDto payDepositDto = new PayDepositDto();
			payDepositDto.setMerchantId(reqDto.getMerchantId());
			payDepositDto.setProjectCode(reqDto.getProjectCode());
			payDepositDto.setCustomerId(Long.parseLong(reqDto.getCustomerId()));
			String pageNumber = reqDto.getPageNumber();
			String pageSize = reqDto.getPageSize();
			payDepositDto.setOrders(" t.create_time desc ");
			Page<PayDepositDto> payDepositPage = payDepositService.getPayDepositList(payDepositDto, PageUtil.begin(Integer.parseInt(pageNumber) , Integer.parseInt(pageSize)), Integer.parseInt(pageSize));
			resDto.setResult("1");
			resDto.setPageNumber(pageNumber);
			resDto.setPageSize(pageSize);
			resDto.setTotalPage(String.valueOf(payDepositPage.getTotalPages()));
			resDto.setTotalCount(String.valueOf(payDepositPage.getTotal()));
			List<PayDepositDto> dtoList = payDepositPage.getRows();
			List<PayDepositListRes> payDepositList = new ArrayList<PayDepositListRes>();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			for(PayDepositDto dto: dtoList){
				PayDepositListRes pdlRes = new PayDepositListRes();
				pdlRes.setIsPayDeposit(dto.getIsPaydeposit());
				pdlRes.setPayDepositHouses(dto.getPayDepositHouses());
				pdlRes.setPayDepositId(String.valueOf(dto.getId()));
				if(dto.getDidTime() == null || "".equals(dto.getDidTime())){
					pdlRes.setPayDepositTime(null);
				}else{
					pdlRes.setPayDepositTime(sdf.format(dto.getDidTime()));
				}
				if(StringUtils.isNotEmpty(dto.getAuditStatus())){
					pdlRes.setAuditStatus(AuditStatusEnum.getByNo(dto.getAuditStatus()).getDes());
				}else{
					pdlRes.setAuditStatus(null);
				}

				pdlRes.setRecordBusiness("认筹");
				if(AuditStatusEnum.REJECT.getNo().equals(dto.getAuditStatus())){
					pdlRes.setRecordBusiness("认筹驳回");
				}else if(AuditStatusEnum.REJECT.getNo().equals(dto.getAuditStatus())){
					if(PayDepositBusinessStatusEnum.REFUNDPAYDEPOSIT.getNo().equals(dto.getBusinessStatus())){
						pdlRes.setRecordBusiness("认筹退房");
					}else{
						pdlRes.setRecordBusiness("认筹");
					}
				}
				payDepositList.add(pdlRes);
			}
			resDto.setPayDepositList(payDepositList);
			resDto.setResult("1");
		}catch(Exception e){
			e.printStackTrace();
			resDto.setErrorCode("00000");
			resDto.setErrorMsg("认筹列表获取失败!");
			resDto.setResult("0");
			return resDto;
		}
		return resDto;
	}
	
}
